package com.ws.operator;
/*
逻辑运算符
&
&&
|
||
!
^
1.逻辑运算符操作的都是布尔类型的变量
2.
 */
public class LogicalTest {

    public static void main(String[] args) {
        //区分 & 与 &&
        //相同点1： & 和 && 的运算结果相同
        //相同点2：当符号左边是 true 时，二者都会执行符号右边的运算
        //不同点： 当符号左边是 false 时，& 会继续执行符号右边的运算，&& 则不再执行符号右边的运算
        boolean b1 = true;
        b1 = false;
        int num1 = 10;
        if (b1 & (num1++ > 0)) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }
        System.out.println("num1 = " + num1); //num1 = 11

        boolean b2 = true;
        b2 = false;
        int num2 = 10;
        if (b2 && (num2++ > 0)) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }
        System.out.println("num2 = " + num2); //num2 = 10


        //区分 | 和 ||
        //相同点1： | 和 || 的运算结果相同
        //相同点2：当符号左边是 false 时，二者都会执行符号右边的运算
        //不同点： 当符号左边是 true 时，| 会继续执行符号右边的运算，|| 则不再执行符号右边的运算
        boolean b3 = true;
        int num3 = 10;
        if (b3 | (num3++ > 0)) {
            System.out.println("true");
        } else {
            System.out.println(false);
        }
        System.out.println("num3 = " + num3);

        boolean b4 = true;
        int num4 = 10;
        if (b4 || (num4++ > 0)) {
            System.out.println("true");
        } else {
            System.out.println(false);
        }
        System.out.println("num4 = " + num4);

    }
}
